from sqlalchemy import Column
from sqlalchemy import Integer
from sqlalchemy import Unicode

from sqlalchemy.exc import IntegrityError
from sqlalchemy.ext.declarative import declarative_base

from sqlalchemy.orm import scoped_session
from sqlalchemy.orm import sessionmaker

from zope.sqlalchemy import ZopeTransactionExtension

from sqlalchemy import Text

from sqlalchemy import Table, ForeignKey
from sqlalchemy.orm import relationship, backref

from scp.modelo.models import Base

from scp.modelo.Tipo_Item import Tipo_Item

__all__ = [ 'Fase' ]



class Fase(Base):
    """ Clase que modela una Fase de un Proyecto, una fase se relaciona con Item y Tipos de Items"""
    __tablename__ = 'fase'
    id = Column(Integer, primary_key=True)
    orden = Column(Integer, nullable=False)
    nombre = Column(Unicode(20), nullable=False)
    descripcion = Column(Unicode(100), nullable=False)
    fecha_inicio = Column(Text, nullable=False)
    fecha_fin = Column(Text, nullable=False)
    observacion = Column(Unicode(100), nullable=False)
    estado = Column(Unicode(20), nullable=False)
    
    
    lineas_bases = relationship("Linea_Base", backref="fase")
    items = relationship("Item", backref="fase")
    tipos_items = relationship("Tipo_Item", backref="fase")
    proyecto_id = Column(Integer, ForeignKey('proyecto.id'))
    
    
